草庐IT

javascript oop、instanceof 和基类

全部标签

javascript - 在使用来自深度 npm 依赖项的构造函数创建的对象上使用 `instanceof`

背景:我有一个npm模块,其中包含常见的错误处理代码,包括自定义错误:functionCustomError(){/*...*/}CustomError.prototype=Object.create(Error.prototype);CustomError.prototype.constructor=CustomError;module.exports=CustomError;我还有一些其他模块(我们称它们为'module-a'和'module-b'),它们都依赖于错误处理模块。我还有一些使用Bluebirds“过滤捕获”功能的代码:doSomething.catch(CustomE

javascript - 为什么 instanceof 在这里评估为真?

在此代码段中,语句finstanceofPipeWritable返回true(Nodev8.4.0):conststream=require('stream');constfs=require('fs');classPipeWritableextendsstream.Writable{constructor(){super();}}consts=newPipeWritable();constf=fs.createWriteStream('/tmp/test');console.log(finstanceofPipeWritable);//true...???对象s:Object.get

javascript - JavaScript 中 typeof 和 instanceof 的区别

这个问题在这里已经有了答案:instanceofStringnotbehavingasexpectedinGoogleAppsScript(1个回答)关闭9年前。我正在使用node.js,所以这可能是V8特有的。我一直注意到typeof和instanceof之间存在一些奇怪的差异,但这里有一个让我很困扰:varfoo='foo';console.log(typeoffoo);Output:"string"console.log(fooinstanceofString);Output:false那里发生了什么? 最佳答案 typeof

c# - 如何从用 C# 编写的抽象基类继承

我正在尝试使用Python.NET(2.1.0)从Python(2.7)中的抽象.NET基类继承。我是Pythonn00b,但据我了解……这是我仅在Python中成功完成的,并且效果很好:importabcclassDoor(object):__metaclass__=abc.ABCMetadefopen(self):ifnotself.is_open():self.toggle()defclose(self):ifself.is_open():self.toggle()@abc.abstractmethoddefis_open(self):pass@abc.abstractmetho

python - 从命名元组基类继承

这个问题与Inheritnamedtuplefromabaseclassinpython正好相反。,其目的是从命名元组继承子类,反之亦然。在正常继承中,这是可行的:classY(object):def__init__(self,a,b,c):self.a=aself.b=bself.c=cclassZ(Y):def__init__(self,a,b,c,d):super(Z,self).__init__(a,b,c)self.d=d[出]:>>>Z(1,2,3,4)但是如果基类是一个namedtuple:fromcollectionsimportnamedtupleX=namedtup

python - Python 抽象基类可以强制执行函数签名吗?

假设我定义了一个abstractbaseclass像这样:fromabcimportabstractmethod,ABCMetaclassQuacker(object):__metaclass__=ABCMeta@abstractmethoddefquack(self):return"Quack!"这确保任何从Quacker派生的类都必须实现quack方法。但如果我定义以下内容:classPoliteDuck(Quacker):defquack(self,name):return"Quackquack%s!"%named=PoliteDuck()#noerror我可以实例化该类,因为我

python - 基类方法的重写方法调用如何工作?

根据docsoninheritance:Derivedclassesmayoverridemethodsoftheirbaseclasses.Becausemethodshavenospecialprivilegeswhencallingothermethodsofthesameobject,amethodofabaseclassthatcallsanothermethoddefinedinthesamebaseclassmayendupcallingamethodofaderivedclassthatoverridesit.这是怎么发生的?有人可以用一个简单的例子来说明这个概念吗?

Python - 测试一个抽象基类

我正在寻找在抽象基类中定义的测试方法的方法/最佳实践。我能直接想到的一件事是对基类的所有具体子类执行测试,但有时这似乎过分了。考虑这个例子:importabcclassAbstract(object):__metaclass__=abc.ABCMeta@abc.abstractpropertydefid(self):return@abc.abstractmethoddeffoo(self):print"foo"defbar(self):print"bar"是否可以在不进行任何子类化的情况下测试bar? 最佳答案 在较新版本的Pyth

python - 确定 Python 类是抽象基类还是具体类

我的Python应用程序包含许多抽象类和实现。例如:importabcimportdatetimeclassMessageDisplay(object):__metaclass__=abc.ABCMeta@abc.abstractpropertydefdisplay(self,message):passclassFriendlyMessageDisplay(MessageDisplay):defgreet(self):hour=datetime.datetime.now().timetuple().tm_hourifhourFriendlyMessagePrinter是我们可以使用的具

python - 如何从抽象基类覆盖模型字段的默认值

我有一些看起来像这样的代码:classBaseMessage(models.Model):is_public=models.BooleanField(default=False)#somemorefields...classMeta:abstract=TrueclassMessage(BaseMessage):#somefields...我想覆盖Message模型中is_public字段的默认值,以便该模型为True。我查看了一些相关的Django文档并浏览了模型对象,但我无法找到合适的位置来执行此操作。有什么建议吗? 最佳答案 您